home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
AMIGA
/
AMICUS
/
AMICUS12.ADF
/
AmigaBBS
/
boards
(
.txt
)
< prev
next >
Wrap
AmigaBASIC Source Code
|
1986-08-05
|
12KB
|
337 lines
Main:
GOSUB Boards
CHAIN "df0:Menus",20,ALL
Modem:
IF rings=0 THEN OtherModem
x=FRE(0)
FOR j=1 TO LEN(a$):p$=MID$(a$,j,1)
PRINT p$;:PRINT#1,p$;:NEXT j
a$="":p$="":RETURN
OtherModem:
x=FRE(0)
FOR j=1 TO LEN(a$):p$=MID$(a$,j,1)
PRINT p$;:NEXT j
a$="":p$="":RETURN
Answers:
telly=0:t$="":t=0:i$="":ch$="":alter=0:IF rings=0 THEN SomeAnswers
WHILE 1 AND alter<1
WHILE LOC(1)<>0
ch$=INPUT$(1,1)
equivs=ASC(ch$) AND 127:IF equivs<>1 THEN ch$=CHR$(equivs)
i$=i$+ch$:equivs=0
telly=telly+1:IF telly=78 THEN ch$=r$:telly=0
IF ch$=CHR$(8) AND LEN(i$)>=2 THEN i$=LEFT$(i$,LEN(i$)-2):telly=telly-2
IF ch$=CHR$(10) OR ch$=CHR$(13) OR ch$=r$ THEN alter=3:telly=0
a$=ch$:GOSUB Modem:ch$="":connect=PEEK (&Hbfd*&H1000+&H0):IF connect<>0 THEN okp=0:RETURN
WEND
ch$=INKEY$:i$=i$+ch$
a$=ch$:GOSUB Modem
IF ch$=CHR$(10) OR ch$=CHR$(13) OR ch$=r$ THEN telly=0:GOTO MoreAnswers
IF ch$=CHR$(8) AND LEN(i$)>=2 THEN i$=LEFT$(i$,LEN(i$)-2)
ch$="":connect=PEEK (&Hbfd*&H1000+&H0):IF connect<>0 THEN okp=0:RETURN
WEND
IF i$<>"" THEN MoreAnswers
SomeAnswers:
ch$=INKEY$:i$=i$+ch$:a$=ch$:GOSUB Modem
IF ch$= CHR$(10) OR ch$=CHR$(13) OR ch$=r$ THEN MoreAnswers
IF ch$=CHR$(8) AND LEN(i$)>=2 THEN i$=LEFT$(i$,LEN(i$)-2)
ch$=""
GOTO SomeAnswers
MoreAnswers:
IF okp<>1 THEN RETURN
IF i$="" THEN ch$="":GOTO Answers
t$=i$:IF LEN(t$)>80 THEN t$=LEFT$(t$,78)+r$
RETURN
SeqRead:
ERASE TBL$:DIM TBL$(45)
a$=r$+r$+"[> K Quits <]"+r$+r$:GOSUB Modem
OPEN "I", #3, file$
ReadSeq:
j=0:L=0:k=0:Countl=0
WHILE NOT EOF(3)
x=FRE(0):j=j+1
LINE INPUT#3,TBL$(j):TBL$(j)=TBL$(j)+r$
WEND
CLOSE#3:k=j:L=0:Detect=0
WHILE L<k
L=L+1:a$=TBL$(L):GOSUB Modem
CheckSeq:
t$="":t=0:i$="":ch$="":IF rings=0 THEN SomeCheckSeq
WHILE LOC(1)<>0
ch$=INPUT$(1,1):equivs=ASC(ch$) AND 127:IF equivs<>1 THEN ch$=CHR$(equivs)
i$=i$+ch$:equivs=0:a$=ch$:GOSUB Modem
WEND
IF i$<>"" THEN MoreCheckSeq
SomeCheckSeq:
ch$=INKEY$:i$=i$+ch$:a$=ch$:GOSUB Modem
OtherCheckSeq:
IF Detect=1 GOTO MoreCheckSeq
Countl=Countl+1:IF Countl=24 THEN a$=r$+"More (y,n,c)?":GOSUB A1
IF Countl=24 THEN MenS$=UCASE$(LEFT$(t$,1)):IF MenS$="N" THEN L=k+1
IF Countl=24 AND MenS$="Y" THEN Countl=0
IF Countl=24 AND MenS$="C" THEN Detect=1
IF Countl=24 AND Detect<>1 THEN Countl=0
MoreCheckSeq:
IF i$=CHR$(75) OR i$=CHR$(107) THEN L=k+1
WEND
ERASE TBL$:DIM TBL$(45):RETURN
A1:
GOSUB Modem:GOSUB Answers:RETURN
Boards:
IF okp<>1 THEN RETURN
GOSUB CheckConTime:IF okp<>1 THEN RETURN
MenS$="":L=0
a$=r$+"Loading Titles..."+r$:GOSUB Modem
OPEN "I", #3, "df1:Board/B"+RIGHT$(zl$,1)
FOR j=1 TO 4:LINE INPUT#3,numM$(j):NEXT j:CLOSE#3
OPEN "I", #3, "df1:Board/"+zl$
FOR j=1 TO VAL(numM$(3))*2
L=L+1
LINE INPUT#3,ABCS$(j):ABCS$(j)=ABCS$(j)+r$
IF L=2 THEN ABCS$(j)=ABCS$(j)+r$:L=0
NEXT j:CLOSE#3
a$=r$+"There are "+numM$(3)+" messages."+r$:GOSUB Modem
a$=r$+"Highest message you have read is "+Board$(meni)+r$:GOSUB Modem
MoreBoards:
IF okp<>1 THEN RETURN
GOSUB CheckConTime:IF okp<>1 THEN RETURN
MenS$="":a$=r$+"B"+RIGHT$(zl$,1)+":":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
IF MenS$="H" THEN file$="df1:Board/BHelp":GOSUB SeqRead:GOTO MoreBoards
IF MenS$="?" THEN file$="df1:Board/BMenu":GOSUB SeqRead:GOTO MoreBoards
IF MenS$="R" THEN BoardRead
IF MenS$="L" THEN file$="df1:Board/ListBoards":GOSUB SeqRead:GOTO MoreBoards
IF MenS$="P" THEN GOSUB BoardPost:GOTO MoreBoards
IF MenS$="S" THEN BoardScan
IF MenS$="C" THEN BoardChange
IF MenS$="X" THEN RETURN
a$=r$+"No such command."+r$:GOSUB Modem:GOTO MoreBoards
CheckConTime:
ContiMe$=TIME$:ChEntTime$=RIGHT$(EnttiMe$,5):ContiMe$=RIGHT$(ContiMe$,5)
ContiMe=VAL(ContiMe$):EnttiMe=VAL(ChEntTime$)
IF EnttiMe>58 AND EnttiMe>ContiMe THEN EnttiMe=ContiMe
IF ContiMe-EnttiMe>30 AND Veru$="000" THEN okp=0:a$=r$+"Time limit exceeded."+r$:GOSUB Modem:RETURN
IF ContiMe-EnttiMe>45 AND Veru$="007" THEN okp=0:a$=r$+"Time limit exceeded."+r$:GOSUB Modem:RETURN
okp=1:RETURN
BoardPost:
IF Veru$="000" THEN a$=r$+"Not validated for that command":GOSUB Modem:RETURN
a$=r$+"Subject:":GOSUB A1:Subject$=LEFT$(t$,LEN(t$)-1):IF LEN(Subject$)>30 THEN BoardPost
TBL$(1)="Time:"+TIME$+" "+"Date:"+DATE$
TBL$(2)="Name:"+Name1$+" "+Name2$+"Subject:"+Subject$+" UserID:"+UserID$
TBL$(3)=r$
a$=r$+"Enter Message: [Max. 40 lines] /EX to Exit"+r$:GOSUB Modem
Extm=0:Ddt=3
WHILE Extm<1
Ddt=Ddt+1
a$=r$+STR$(Ddt-3)+":":GOSUB A1
TBL$(Ddt)=t$
IF UCASE$(LEFT$(t$,3))="/EX" THEN Extm=1:Ddt=Ddt-1
IF Ddt=42 THEN a$=r$+"Last Line!":GOSUB Modem
IF Ddt=43 THEN Extm=1
WEND
QueryBoardPost:
a$=r$+"A- Abort S- Save L- List I- Insert R- Replace C- Continue D- Delete :":GOSUB A1
MenS$=UCASE$(LEFT$(t$,1))
IF MenS$="A" THEN RETURN
IF MenS$="S" THEN GOSUB BoardPostSave:RETURN
IF MenS$="L" THEN BoardPostList
IF MenS$="I" THEN BoardPostInsert
IF MenS$="R" THEN BoardPostReplace
IF MenS$="D" THEN BoardPostDelete
IF MenS$="C" THEN BoardPostContinue
GOTO QueryBoardPost
BoardPostInsert:
IF Ddt>=199 THEN a$=r$+"No room to insert.":GOSUB Modem:GOTO QueryBoardPost
a$=r$+"Insert before which line:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN QueryBoardPost
instln=VAL(t$)+3
FOR j=Ddt TO instln STEP -1
TBL$(j+1)=TBL$(j)
NEXT j
TBL$(instln)=" "+r$:Ddt=Ddt+1
GOTO QueryBoardPost
BoardPostDelete:
a$=r$+"Delete starting which line:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN QueryBoardPost
stln=VAL(t$)+3:IF stln<4 OR stln>Ddt THEN QueryBoardPost
a$=r$+"Ending which line:":GOSUB A1:endtln=VAL(t$)+3:IF endtln>Ddt THEN endtln=Ddt
IF stln>endtln THEN SWAP stln,endtln
a$=r$+"Delete from"+STR$(stln-3)+" to"+STR$(endtln-3)+r$+"Are you sure? (Y or N):":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
IF MenS$="N" THEN QueryBoardPost
FOR j=endtln+1 TO Ddt
TBL$(j-((endtln+1)-stln))=TBL$(j)
NEXT j
Ddt=Ddt-((endtln+1)-stln)
FOR j=Ddt TO Ddt+((endtln+1)-stln)
TBL$(j)=" "+r$
NEXT j
GOTO QueryBoardPost
BoardPostList:
a$=r$+"Line to start at:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN QueryBoardPost
stln=VAL(t$)+3:IF stln<4 OR stln>Ddt THEN QueryBoardPost
a$=r$+"Line to stop at:":GOSUB A1:endtln=VAL(t$)+3:IF endtln<stln THEN QueryBoardPost
IF endtln>Ddt THEN endtln=Ddt
FOR L=stln TO endtln
a$=STR$(L-3)+":"+TBL$(L):GOSUB Modem
NEXT L
GOTO QueryBoardPost
BoardPostReplace:
a$=r$+"Replace which line:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN QueryBoardPost
rplnn=VAL(t$)+3:IF rplnn<4 OR rplnn>Ddt THEN QueryBoardPost
a$=r$+"Replace:"+ABCS$(rplnn)+"With:":GOSUB A1:IF t$=CHR$(10) OR t$=CHR$(13) THEN QueryBoardPost
Temprep$=t$
a$=r$+"Replace:"+TBL$(rplnn)+"With:"+Temprep$+"(Y or N):":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
IF MenS$="Y" THEN TBL$(rplnn)=Temprep$
GOTO QueryBoardPost
BoardPostContinue:
IF Ddt>198 THEN a$=r$+"No Room!":GOTO QueryBoardPost
Dzz=0
a$=r$+"Enter Text: [Max. 197 lines] /EX to Exit":GOSUB Modem
WHILE Dzz<1
Ddt=Ddt+1
a$=r$+STR$(Ddt-3)+":":GOSUB A1:TBL$(Ddt)=t$
IF UCASE$(LEFT$(t$,3))="/EX" THEN Dzz=1:Ddt=Ddt-1
IF Ddt=199 THEN a$=r$+"Last Line!":GOSUB Modem
IF Ddt=200 THEN Dzz=1
WEND
GOTO QueryBoardPost
BoardPostSave:
Guanm(1)=VAL(numM$(1)):Guanm(2)=VAL(numM$(2)):Guanm(3)=VAL(numM$(3)):Guanm(4)=VAL(numM$(4))
CLOSE#3
OPEN "A",#3,"df1:Board/"+zl$
PRINT#3,TBL$(1)
PRINT#3,TBL$(2)
CLOSE#3:ABCS$((Guanm(4)*2)-1)=TBL$(1)+r$:ABCS$(Guanm(4)*2)=TBL$(2)+r$+r$
Guanm(2)=Guanm(4):Guanm(3)=Guanm(3)+1
Guanm(4)=Guanm(4)+1
numM$(1)=STR$(Guanm(1)):numM$(1)=RIGHT$(numM$(1),LEN(numM$(1))-1)
numM$(2)=STR$(Guanm(2)):numM$(2)=RIGHT$(numM$(2),LEN(numM$(2))-1)
numM$(3)=STR$(Guanm(3)):numM$(3)=RIGHT$(numM$(3),LEN(numM$(3))-1)
numM$(4)=STR$(Guanm(4)):numM$(4)=RIGHT$(numM$(4),LEN(numM$(4))-1)
Board$(meni)=numM$(2)
OPEN "O",#3,"df1:Board/B"+RIGHT$(zl$,1)
FOR j=1 TO 4
PRINT#3,numM$(j)
NEXT j:CLOSE#3
Boars$=STR$(Guanm(2)):Boars$=RIGHT$(Boars$,LEN(Boars$)-1)
Boars$=RIGHT$(zl$,1)+Boars$+"."
OPEN "O",#3,"df1:Board/"+Boars$
FOR j=1 TO Ddt
PRINT#3,TBL$(j)
NEXT j:CLOSE#3
RETURN
BoardRead:
a$=r$+"N- New F- Forward R- Reverse M- Marked X- Exit :":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
IF MenS$="N" THEN NewBoardRead
IF MenS$="F" THEN ForwardBoardRead
IF MenS$="R" THEN ReverseBoardRead
IF MenS$="M" THEN MarkedBoardRead
IF MenS$="X" THEN MoreBoards
GOTO BoardRead
NewBoardRead:
chde=0:bbk=VAL(Board$(meni)):IF bbk=VAL(numM$(2)) THEN a$=r$+"No new messages.":GOSUB Modem:GOTO BoardRead
WHILE chde<1
bbk=bbk+1
Board$(meni)=STR$(bbk):Board$(meni)=RIGHT$(Board$(meni),LEN(Board$(meni))-1)
Boars$=RIGHT$(zl$,1)+Board$(meni)+"."
file$="df1:Board/"+Boars$:Ddt=0:GOSUB SeqRead
a$=r$+"N- Next R- Reply Q- Quit :":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
IF MenS$="R" THEN GOSUB BoardPost
IF MenS$="Q" THEN bbk=VAL(numM$(2))
IF bbk=VAL(numM$(2)) THEN chde=1
WEND
GOTO BoardRead
ForwardBoardRead:
a$=r$+"Messages "+numM$(1)+" to "+numM$(2):GOSUB Modem
a$=r$+"Start with which message :":GOSUB A1:bbk=VAL(t$)
IF bbk<VAL(numM$(1)) OR bbk> VAL(numM$(2)) THEN BoardRead
chde=0
WHILE chde<1
IF bbk> VAL(Board$(meni)) THEN Board$(meni)=STR$(bbk):Board$(meni)=RIGHT$(Board$(meni),LEN(Board$(meni))-1)
Boars$=STR$(bbk):Boars$=RIGHT$(Boars$,LEN(Boars$)-1)
Boars$=RIGHT$(zl$,1)+Boars$+"."
file$="df1:Board/"+Boars$:Ddt=0:GOSUB SeqRead
a$=r$+"N- Next R- Reply Q- Quit :":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
IF MenS$="R" THEN GOSUB BoardPost
IF MenS$="Q" THEN bbk=VAL(numM$(2))+1
bbk=bbk+1
IF bbk>VAL(numM$(2)) THEN chde=1
WEND
GOTO BoardRead
ReverseBoardRead:
a$=r$+"Messages "+numM$(1)+" to "+numM$(2):GOSUB Modem
a$=r$+"Start with which message :":GOSUB A1:bbk=VAL(t$)
IF bbk<VAL(numM$(1)) THEN BoardRead
IF bbk>VAL(numM$(2)) THEN bbk=VAL(numM$(2))
chde=0
WHILE chde<1
IF bbk> VAL(Board$(meni)) THEN Board$(meni)=STR$(bbk):Board$(meni)=RIGHT$(Board$(meni),LEN(Board$(meni))-1)
Boars$=STR$(bbk):Boars$=RIGHT$(Boars$,LEN(Boars$)-1)
Boars$=RIGHT$(zl$,1)+Boars$+"."
file$="df1:Board/"+Boars$:Ddt=0:GOSUB SeqRead
a$=r$+"N- Next R- Reply Q- Quit :":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
IF MenS$="R" THEN GOSUB BoardPost
IF MenS$="Q" THEN bbk=VAL(numM$(1))
bbk=bbk-1
IF bbk<VAL(numM$(1)) THEN chde=1
WEND
GOTO BoardRead
MarkedBoardRead:
IF lamprey=0 THEN a$=r$+"No messages marked.":GOSUB Modem:GOTO BoardRead
chde=0:bbk=0:CLOSE#3
WHILE chde<1
bbk=bbk+1:Ddt=0
leersr=VAL(ScanM$(bbk))
IF leersr> VAL(Board$(meni)) THEN Board$(meni)=STR$(bbk):Board$(meni)=RIGHT$(Board$(meni),LEN(Board$(meni))-1)
file$="df1:Board/"+RIGHT$(zl$,1)+ScanM$(bbk)+".":GOSUB SeqRead
a$="N- Next R- Reply Q- Quit :":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
IF MenS$="R" THEN GOSUB BoardPost
IF MenS$="Q" THEN bbk=lamprey
IF bbk=lamprey THEN chde=1
WEND
GOTO BoardRead
BoardScan:
a$=r$+"Messages "+numM$(1)+" to "+numM$(2):GOSUB Modem
a$=r$+"Start which Message :":GOSUB A1:k=VAL(t$)
IF k<VAL(numM$(1)) OR k>VAL(numM$(2)) THEN MoreBoards
a$=r$+"Mark Messages? (Y or N):":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
IF MenS$="Y" THEN elwin=1:GOTO MoreScan
elwin=0
MoreScan:
edch=0:lamprey=0
WHILE edch<1
a$=ABCS$((k*2)-1):GOSUB Modem
a$=ABCS$(k*2):GOSUB Modem
IF elwin=1 THEN a$=r$+"Mark (Y or N):":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1))
IF elwin=1 AND MenS$="Y" THEN lamprey=lamprey+1:ScanM$(lamprey)=STR$(k)
IF elwin=1 AND MenS$="Y" THEN ScanM$(lamprey)=RIGHT$(ScanM$(lamprey),LEN(ScanM$(lamprey))-1)
k=k+1
IF k>VAL(numM$(2)) THEN edch=1
WEND
GOTO MoreBoards
BoardChange:
a$=r$+"Choose Board (1-9) or List (L) :":GOSUB A1:MenS$=UCASE$(LEFT$(t$,1)):meni=VAL(t$)
IF MenS$=CHR$(10)OR MenS$=CHR$(13) THEN MoreBoards
IF MenS$="L" THEN file$="df1:Board/ListBoards":GOSUB SeqRead:GOTO BoardChange
IF meni>=1 AND meni<=9 THEN zl$="FmT"+MenS$:GOTO Boards
GOTO BoardChange